Проект по А/B-тестированию

Задачи исследования и исходные данные

В моем распоряжении есть датасет с действиями пользователей и несколько вспомогательных датасетов. Задача состоит в проведении оценки результатов A/B-теста.

Необходимо:

Дополнительно проверить:

План работ:

Техническое задание:

Название теста: recommender_system_test;

Загрузка данных и изучение общей информации

Загрузка библиотек

Мой основной инструмент — pandas. Я подключаю эту библиотеку. Также подключаю библиотеки datetime, numpy, matplotlib, scipy. Они потребуются для проведения моего исследования.

Дополнительно отключу предупреждения (библиотека warnings).

Загрузка и описание данных

Для последующего удобства присвою имена датафреймам, с которыми мне предстоит работать:

Подготовка данных к анализу

Обработка пропусков

Т.к. в данных обнаружено около 86% пропущенных значений, то обработке такое огромное количество строк не подлежит. Наличие пропусков, очевидно, связано с необязательностью заполнения данного поля при вводе данных (дополнительные данные о событии - это опционально заполняемая информация).

Приведение типов данных

Разделю дату в столбце event_dt на дату и временя отдельно, так будет целесообразнее для последующего анализа.

Проверка полноты данных

Проверю количество уникальных пользователей в таблицах:

Можно увидеть, что количество уникальных пользователей в таблицах различается, т.к. не все пользователи участуют в тестировании, а также не все пользователи совершают какие-то события.

Проверю полноту данных по исследуемым датам, построив распределение событий по времени.

Можно обратить внимание, что данные за 30 декабря неполные, нужно обратить на эту дату особое внимание.

Выводы по разделу

Итак, данные получены, отображены и предварительно пранализированы.

Согласно документации, структуда данных следующая:

календарь маркетинговых событий на 2020 год marketing_events:

Все пользователи, зарегистрировавшиеся в интернет-магазине в период с 7 по 21 декабря 2020 года users:

Все события новых пользователей в период с 7 декабря 2020 по 4 января 2021 года events:

Таблица участников тестов participants:

На этапе предварительного анализа выявлено:

Проведено:

Сведения о событиях:

Оценка соответствия данных требованиям технического задания

Проверка соответствия данных теста

Можно увидеть, что в таблице содержатся результаты 2-ух проведенных тестов, а техническое задание предусматривает анализ теста recommender_system_test, поэтому необходимо исключить данные об участниках стороннего теста, предварительно проверив их участие в обоих тестах. Т.к. участие одного и того же пользователя ещё в одном тесте может исказить результаты.

Обнаружено 1602 человека, участвовашших в обоих тестах, однако исключению подлежат только те их них, кто состоит в группе B, т.к. пользоватлеи из группы А (контрольной) не взаимодействовали с изменениями.

Необходимо обратить внимание, что при исключении учстников стороннего теста и пользователей, принимающих участие в двух тестах одновременно (из контрольной группы А), я получаю количество участников теста: 5780, тогда как в техническом задании ожидаемое количество участников теста составляет 6000 пользователей.

Проверка тестовых групп

Исходя из этих результатов, можно можно сделать вывод, что тестовые группы сформированы правильно.

Проверка аудитории

Проверю распределение тестовой аудитории по регионам:

Необходимо обратить внимание, что доля новых пользователей из региона EU составляет около 12%, тогда как в техническом задании это значение составляет 15%.

Проверю, является ли эта разница статистически значимой для проведения теста. Т.к. я буду проверять гипотезу о равенстве долей, то я буду использовать z-тест.

Напишу функцию с необходимыми параметрами для использования в дальнейшей работе:

Расчитаю количество новых пользователей из региона EU в тестовой выборке:

Нулевая гипотеза H₀:

Альтернативная гипотеза H₁:

Приму стандартное значение критического уровня статистической значимости в 5% и определю, является ли различие 15% и 12% статистически значимым.

Доля новых пользователей из региона EU составляет около 12%, тогда как в техническом задании это значение составляет 15%. И эта разница является статистически значимой, что подтверждено проведенным z-тестом.

Проверка соответствия времени проведения теста

Временной интервал начала и остановки набора новых пользователей соответствует техническому заданию.

Необходимо обратить внимание, что в описании к данным указан временной диапазон всех событий новых пользователей в период с 7 декабря 2020 по 4 января 2021, однако представленные данные содержат информацию только до 2020-12-30, что не соответствует техническому заданию.

Проверю, не совпадает ли время теста с маркетинговыми и другими активностями. Даты проведения теста: 07/12/2020-01/04/2020.

Обнаружено, что во время проведения АВ-теста проходило 2 промо-кампании: рождественская и новогодняя.

Проверка параметров ожидаемого эффекта

В техническом задании указано, что ожидаемый эффект нужно наблюдать в течение 14 дней с момента регистрации в системе. Необходимо проверить датафрейм тестовых событий и исключить те события, которые произошли более, чем через 14 день после регистрации.

Сформирую оющую таблицу событий, припецепив к таблице событий информацию по проведенным тестам и пользователям:

Добавлю в итоговую таблицу информацию о пользователях:

Оставляю в финальной тестовой таблице только те записи, в которых собитие наступило не позднее 14 дней с момента регистрации пользователя.

Следует обратить внимание, что из 5780 участников теста, события совершали только 3010 - чуть больше половины всех пользователей, участвующих в проведении теста.

Выводы по разделу

Исследовательский анализ данных

Изучение воронкок событий для групп тестирования

В логе представлена информация по 5 событиям:

Из полученных данных и графика можно увидеть, что чаще пользователи логинятся, следующим этапом просматривают карточку товара, корзину и на заключительном этапе совершают покупку.

Разделю датафрейм на 2 тестовые группы для удобства работы.

Построю воронки событий для групп А и В, предварительно добавив столбец со всеми пользователями в каждую группу.

Построение маркетинговой воронки.

Анализируя полученные результаты можно сказать следующее:

При изначальном равномерном распределении количества участников теста, регистрацию в группе А прошли гораздо больше людей, поэтому количество событий на пользователя в выборках распределены неодинаково.

При построении маркетинговой воронки обнаруживаются некоторые несоответствия: людей, совершивших покупку, немного больше, чем тех, кто заходил в корзину. Это может быть связано с тем, что в корзине уже лежат отложенные товары и есть возможность произвести покупку без перехода на станицу корзины.

Проверка статистической разницы долей

На этом этапе буду проводить проверку гипотез для долей в двух группах тестирования.

Если некоторая доля генеральной совокупности обладает признаком, а другая её часть — нет, об этой доле можно судить по выборке из генеральной совокупности. Т.к. речь тут идет о проверке гипотезы о равенстве долей, то я буду использовать z-тест.

Чтобы снизить вероятность ложнопозитивного результата при множественном тестировании гипотез, а именно, уточнить критический уровень статистической значимости со стандартных 5%, я буду использовать поправку Бонферрони, т.е. разделю уровень значимости на число проверяемых гипотез (т.е. 3). при выбранном критическом уровне статистической значимости в 5%. Выбранный уровень 1,7%.

Проверка Гипотезы №1

Нулевая гипотеза H₀:

Альтернативная гипотеза H₁:

Исходные данные:

Проверю, является ли эта разница в долях статистически значимой.

Делаю вывод, что показатели конверсии в просмотр карточек в экспериментальной группе B ухудшились по сранению с группой A. И это различие является статистически значимым.

Проверка Гипотезы №2

Нулевая гипотеза H₀:

Альтернативная гипотеза H₁:

Исходные данные:

Проверю, является ли эта разница в долях статистически значимой.

Делаю вывод, что ухудшение показателя конверсии в просмотр корзины в экспериментальной группе B не является статистически значимым.

Проверка Гипотезы №3

Нулевая гипотеза H₀:

Альтернативная гипотеза H₁:

Исходные данные:

Проверю, является ли эта разница в долях статистически значимой.

Делаю вывод, что ухудшение показателя конверсии в покупку в экспериментальной группе B не является статистически значимым.

Оценка результатов A/B-тестирования

Целью тестирования являлось тестирование изменений, связанных с внедрением улучшенной рекомендательной системы.

В соотвествии с ТЗ:

Характеристика теста:

Ожидания и результаты:

Общий вывод

Прежде чем приступать к A/B-тестированию, необходимо соблюдение некоторых критериев успешности его проведения, а именно:

Критерий по количеству пользователей в группах был соблюден, однако в предоставленных данных присутствовали пользователи, участвовавшие в нескольких тестах одновременно, поэтому для чистоты эксперимента они были исключены. Также под вопросом стоит вопрос активности участника теста. В процессе анализа было выявлено, что больше половины участников в группе В окозалась неактивной и не совершила ни одного события, что могло исказить результаты проведения тестирования.

Не все заявленные пункты технического задания были выполненя, а именно:

Можно отметить также и то, что временной интервал проведения А/В-тестирования попал аж на 2 рекламные кампании - рождественскую и новогоднюю, здесь необходимо учитывать сезонный фактор, возможно, люди разъехались на каникулы и не смогли совершить события.

В любом случае, А/В-тест проведен. Результаты можно оценить следующим образом: Показатели конверсии в экспериментальной группе с новой платежной воронкой ухудшились. Статистически значимым является ухудшение показателей конверсии в просмотр карточек (-9%). Также ухудшились показатели конверсии в просмотр корзины и покупку (ухудшение обеих метрик на 3%).

Считаю результаты проведённого теста не совсем корректными, т.к. в предоставленных данных и в датах достаточно нюансов и несоблюдений критериев успешности его проведения.

Однако можно однозначно сказать, что новая платёжная воронка имеет отрицательный эффект по сравнению с исходной версией и внедрять ее на постоянную основу пока нецелесообразно, ее нужно доработать.

Также хочется отметить, что проводить А/В-тест в период проведения новогодних кампаний неэффективно, необходимо в будущем сроки тестирования выбирать таким образом, чтобы не пересекаться с такими значимыми событиями, т.к. это может повлиять на успешность таких тестов, исказив их результаты.